<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <script>

        // js代码的运行机制  --- 两个阶段
        //   1 预编译阶段
        //      1 提升var声明的变量
        //      2 提升具名函数
        //   2 执行阶段  -- 自上而下执行


        // 你看的代码

        console.log(a);  // undefined

        var a = 1;

        console.log(a);  // 1


        // js真正的执行顺序
        // 提升var 
        // var a;
        // console.log(a);
        // a = 1;
        // console.log(a);


        // 你看到的代码
        // f() ;  // 不会报错     函数是一种特殊的数据类型(不在普通的代码执行顺序中)

        // function f() {
        //     console.log(666);
        // }


        // js真正的执行顺序

        // function f() {
        //     console.log(666);
        // }
        // f() ;


        // 你看到的代码
        // f() ;
        // var f = function() {
        //     console.log(777);
        // }

        // js真正执行的顺序
        var f ;   // undefined
        f() ;
        f = function() {
            console.log(777);
        }


    </script>

</body>

</html>